<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils 0.5: http://docutils.sourceforge.net/" />
<title>Computer Graphics: Final Special Assignment</title>
<style type="text/css">

/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 5196 2007-06-03 20:25:28Z wiemann $
:Copyright: This stylesheet has been placed in the public domain.

Default cascading style sheet for the HTML output of Docutils.

See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/

/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
  border: 0 }

table.borderless td, table.borderless th {
  /* Override padding for "table.docutils td" with "! important".
     The right padding separates the table cells. */
  padding: 0 0.5em 0 0 ! important }

.first {
  /* Override more specific margin styles with "! important". */
  margin-top: 0 ! important }

.last, .with-subtitle {
  margin-bottom: 0 ! important }

.hidden {
  display: none }

a.toc-backref {
  text-decoration: none ;
  color: black }

blockquote.epigraph {
  margin: 2em 5em ; }

dl.docutils dd {
  margin-bottom: 0.5em }

/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
  font-weight: bold }
*/

div.abstract {
  margin: 2em 5em }

div.abstract p.topic-title {
  font-weight: bold ;
  text-align: center }

div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
  margin: 2em ;
  border: medium outset ;
  padding: 1em }

div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
  font-weight: bold ;
  font-family: sans-serif }

div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title {
  color: red ;
  font-weight: bold ;
  font-family: sans-serif }

/* Uncomment (and remove this text!) to get reduced vertical space in
   compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
  margin-bottom: 0.5em }

div.compound .compound-last, div.compound .compound-middle {
  margin-top: 0.5em }
*/

div.dedication {
  margin: 2em 5em ;
  text-align: center ;
  font-style: italic }

div.dedication p.topic-title {
  font-weight: bold ;
  font-style: normal }

div.figure {
  margin-left: 2em ;
  margin-right: 2em }

div.footer, div.header {
  clear: both;
  font-size: smaller }

div.line-block {
  display: block ;
  margin-top: 1em ;
  margin-bottom: 1em }

div.line-block div.line-block {
  margin-top: 0 ;
  margin-bottom: 0 ;
  margin-left: 1.5em }

div.sidebar {
  margin: 0 0 0.5em 1em ;
  border: medium outset ;
  padding: 1em ;
  background-color: #ffffee ;
  width: 40% ;
  float: right ;
  clear: right }

div.sidebar p.rubric {
  font-family: sans-serif ;
  font-size: medium }

div.system-messages {
  margin: 5em }

div.system-messages h1 {
  color: red }

div.system-message {
  border: medium outset ;
  padding: 1em }

div.system-message p.system-message-title {
  color: red ;
  font-weight: bold }

div.topic {
  margin: 2em }

h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
  margin-top: 0.4em }

h1.title {
  text-align: center }

h2.subtitle {
  text-align: center }

hr.docutils {
  width: 75% }

img.align-left {
  clear: left }

img.align-right {
  clear: right }

ol.simple, ul.simple {
  margin-bottom: 1em }

ol.arabic {
  list-style: decimal }

ol.loweralpha {
  list-style: lower-alpha }

ol.upperalpha {
  list-style: upper-alpha }

ol.lowerroman {
  list-style: lower-roman }

ol.upperroman {
  list-style: upper-roman }

p.attribution {
  text-align: right ;
  margin-left: 50% }

p.caption {
  font-style: italic }

p.credits {
  font-style: italic ;
  font-size: smaller }

p.label {
  white-space: nowrap }

p.rubric {
  font-weight: bold ;
  font-size: larger ;
  color: maroon ;
  text-align: center }

p.sidebar-title {
  font-family: sans-serif ;
  font-weight: bold ;
  font-size: larger }

p.sidebar-subtitle {
  font-family: sans-serif ;
  font-weight: bold }

p.topic-title {
  font-weight: bold }

pre.address {
  margin-bottom: 0 ;
  margin-top: 0 ;
  font-family: serif ;
  font-size: 100% }

pre.literal-block, pre.doctest-block {
  margin-left: 2em ;
  margin-right: 2em }

span.classifier {
  font-family: sans-serif ;
  font-style: oblique }

span.classifier-delimiter {
  font-family: sans-serif ;
  font-weight: bold }

span.interpreted {
  font-family: sans-serif }

span.option {
  white-space: nowrap }

span.pre {
  white-space: pre }

span.problematic {
  color: red }

span.section-subtitle {
  /* font-size relative to parent (h1..h6 element) */
  font-size: 80% }

table.citation {
  border-left: solid 1px gray;
  margin-left: 1px }

table.docinfo {
  margin: 2em 4em }

table.docutils {
  margin-top: 0.5em ;
  margin-bottom: 0.5em }

table.footnote {
  border-left: solid 1px black;
  margin-left: 1px }

table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
  padding-left: 0.5em ;
  padding-right: 0.5em ;
  vertical-align: top }

table.docutils th.field-name, table.docinfo th.docinfo-name {
  font-weight: bold ;
  text-align: left ;
  white-space: nowrap ;
  padding-left: 0 }

h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
  font-size: 100% }

ul.auto-toc {
  list-style-type: none }

</style>
</head>
<body>
<div class="document" id="computer-graphics-final-special-assignment">
<h1 class="title">Computer Graphics: Final Special Assignment</h1>

<p>The present application is the result of the development of the Final
Special Assignment for the &quot;Computación Gráfica&quot; (Computer Graphics, in
English) subject of the Computer Science Department of the University of
Buenos Aires (UBA).</p>
<p>This application was developed in the first half of the year 2009 by:</p>
<ul class="simple">
<li>Pablo Antonio (pabloa AT gmail DOT com)</li>
<li>Marta Ponzoni (martaponzoni AT gmail DOT com)</li>
</ul>
<div class="section" id="installation">
<h1>Installation</h1>
<p>This application was written entirely in Python. Thus, the Python
compiler/virtual machine is necessary to run it. Most of GNU/Linux
distributions already come with Python installed out of the box.</p>
<p>If you need to download Python, or want to get more information about its
installation procedure, refer to Python's official website:
<a class="reference external" href="http://www.python.org/">http://www.python.org/</a></p>
<p>Besides Python, the application requires the following components to be
installed on the system:</p>
<ol class="arabic simple">
<li>wxPython</li>
<li>NumPy</li>
<li>PyOpenGL</li>
</ol>
<p>wxPython is a wrapper for the API/toolkit wxWidgets (written in C++). When
testing, version 2.8.8.0, provided by Ubuntu's repositories (2.8.8.8-ubuntu2),
was used. To install it on Debian/Ubuntu, just invoke the command
<tt class="docutils literal"><span class="pre">sudo</span> <span class="pre">apt-get</span> <span class="pre">install</span> <span class="pre">python-wxgtk2.8</span></tt> in the terminal. On Windows (or other
platforms) you have to get wxPython from its official site:
<a class="reference external" href="http://www.wxpython.org/">http://www.wxpython.org/</a></p>
<p>NumPy provides a large library with data structures and high-level mathematical
functions to Python. The most used components here were the matrices and its
associated operations, and the trigonometric functions sine and cosine. When
testing, version 1.2.1, provided by Ubuntu's repositories (1:1.2.1-1ubuntu1)
was used. To install it on Debian/Ubuntu, just invoke the command
<tt class="docutils literal"><span class="pre">sudo</span> <span class="pre">apt-get</span> <span class="pre">install</span> <span class="pre">python-numpy</span></tt> in the terminal. On Windows (or other
platforms) you have to get NumPy from its official site:
<a class="reference external" href="http://numpy.scipy.org/">http://numpy.scipy.org/</a></p>
<p>PyOpenGL is the binding to OpenGL. It's needed to do anything related to
OpenGL in Python. Version 3.0.0b6, provided by Ubuntu's repositories
(3.0.0~b6-3), was used when testing. Again, to install it on Debian/Ubuntu,
just invoke <tt class="docutils literal"><span class="pre">sudo</span> <span class="pre">apt-get</span> <span class="pre">install</span> <span class="pre">python-opengl</span></tt> in the terminal. If you're
on Windows (or other platforms), probably you have to get PyOpenGL from its
official site: <a class="reference external" href="http://pyopengl.sourceforge.net/">http://pyopengl.sourceforge.net/</a></p>
</div>
<div class="section" id="about-the-application">
<h1>About the application</h1>
<div class="section" id="how-to-run-it">
<h2>How to run it</h2>
<p>In order to run the application, the file main.py (which should be in
trunk/TP3/src/) must be executed using Python's compiler/virtual machine.
On GNU/Linux, invoking the command <tt class="docutils literal"><span class="pre">python</span> <span class="pre">main.py</span></tt> (when in the
path to main.py in the directory tree) will pretty likely be enough.</p>
</div>
<div class="section" id="organization-of-code-and-documentation">
<h2>Organization of code (and documentation)</h2>
<p>When situated in trunk/TP3/, we can see the following files/directories:</p>
<ul>
<li><dl class="first docutils">
<dt><em>./src/</em></dt>
<dd><ul class="first last simple">
<li><em>./main.py</em>: This is the main program. The wxPython application is created
here.</li>
<li><em>./core/</em>: Here we have the main parts of the application. The code for the
main frame and its two most important parts (the canvas and the panel) is in
glwindows.py. glfigures.py has the code for the different figures/surfaces
that can be used, and the algorithm that generates the tree.</li>
<li><em>./utils/transformations.py</em>: This is the place where some auxiliary
functions (most are matrix-related) are defined.</li>
<li><em>./view/panel.xrc</em>: This file has the XML which describes the user interface
of our main panel.</li>
</ul>
</dd>
</dl>
</li>
<li><dl class="first docutils">
<dt><em>./doc/</em></dt>
<dd><ul class="first last simple">
<li><em>./README(.html)</em>: This file is the help file you're just reading.</li>
<li><em>./presentation/</em>: Here are the files used for the presentation we gave
for this final Special Assignment. It's mainly an index.html which
contains the slides, and a PDF/PS that describes our implementation in
terms of L-Systems.</li>
</ul>
</dd>
</dl>
</li>
</ul>
</div>
<div class="section" id="legal-stuff">
<h2>Legal stuff</h2>
<p>Programs in this project are Copyright 2009 Pablo Antonio and Marta Ponzoni.</p>
<p>The programs in this project are free software: you can redistribute
it and/or modify it under the terms of the GNU General Public License
as published by the Free Software Foundation, either version 2 of the
License, or (at your option) any later version.</p>
<p>This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.</p>
<p>You should have received a copy of the GNU General Public License
along with this program.  If not, see &lt;<a class="reference external" href="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</a>&gt;.</p>
<p>The presentation is also licensed under GNU GPL v2 (or later).</p>
<dl class="docutils">
<dt>tree1.jpg's original by Rich Niewiroski Jr.</dt>
<dd><a class="reference external" href="http://commons.wikimedia.org/wiki/File:HotelDelCoronado-DragonTree.jpg">http://commons.wikimedia.org/wiki/File:HotelDelCoronado-DragonTree.jpg</a></dd>
<dt>tree2.jpg and tree2-1.jpg's original by snowmanradio</dt>
<dd><a class="reference external" href="http://commons.wikimedia.org/wiki/File:Baginton_oak_tree_in_winter_18f07.JPG">http://commons.wikimedia.org/wiki/File:Baginton_oak_tree_in_winter_18f07.JPG</a></dd>
<dt>tree3.jpg's original by Ed Schipul</dt>
<dd><a class="reference external" href="http://commons.wikimedia.org/wiki/File:Century_Tree.jpg">http://commons.wikimedia.org/wiki/File:Century_Tree.jpg</a></dd>
<dt>tree4.jpg's original by Ondřej Žváček</dt>
<dd><a class="reference external" href="http://commons.wikimedia.org/wiki/File:Pam%C3%A1tn%C3%BD_dub_v_Broumov%C4%9B.jpg">http://commons.wikimedia.org/wiki/File:Pam%C3%A1tn%C3%BD_dub_v_Broumov%C4%9B.jpg</a></dd>
</dl>
</div>
</div>
</div>
</body>
</html>
